// Copyright 2003 Eric Marchesin - <eric.marchesin@laposte.net>
//
// This source file(s) may be redistributed by any means PROVIDING they
// are not sold for profit without the authors expressed written consent,
// and providing that this notice and the authors name and all copyright
// notices remain intact.
// THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED. USE IT AT YOUR OWN RISK. THE AUTHOR ACCEPTS NO
// LIABILITY FOR ANY DATA DAMAGE/LOSS THAT THIS PRODUCT MAY CAUSE.
//-----------------------------------------------------------------------
using System;
using System.Collections;
using EMK.LightGeometry;
using Microsoft.Xna.Framework;
using EMK.Cartography;



namespace DustObjects
{

    public enum EnumDustTerrain
    {
        TERRE,
        MER
    }

    public enum EnumDustType
    {
        NONE,
        CAPITAL,
        GISEMENT
    }

	/// <summary>
	/// Basically a node is defined with a geographical position in space.
	/// It is also characterized with both collections of outgoing arcs and incoming arcs.
	/// </summary>
	[Serializable]
	public class DustNode : Node {

        #region New Elements used by editor for serialization

        private EnumDustTerrain _Terrain;
        public EnumDustTerrain Terrain
        {
            get { return _Terrain; }
            set { _Terrain = value; }
        }

        private EnumDustType _TypeCase;
        public EnumDustType TypeCase
        {
            get { return _TypeCase; }
            set { _TypeCase = value; }
        }
        #endregion

        [NonSerialized]
        public Units Units;

		/// <summary>
		/// Constructor.
		/// </summary>
		/// <param name="PositionX">X coordinate.</param>
		/// <param name="PositionY">Y coordinate.</param>
		/// <param name="PositionZ">Z coordinate.</param>
        public DustNode(double PositionX, double PositionY, double PositionZ):base(PositionX,PositionY,PositionZ)
        {		}


        /// <summary>
        /// Returns a copy of this node.
        /// </summary>
        /// <returns>The reference of the new object.</returns>
        public override object Clone()
        {
            DustNode N = new DustNode(X, Y, Z);
			N._Passable = _Passable;
            N.TypeCase = _TypeCase;
            N.Terrain = _Terrain;
			return N;
        }
    }
}

